import copy
from shutil import copymode


class CPU:
    pass


class Disk:
    pass


class Computer:
    def __init__(self, cpu, disk) -> None:
        self.cpu = cpu
        self.disk = disk


print('-------------(1)变量的赋值-------------')
cpu1 = CPU()
# 相当于一个对象，放到了两个变量中存储
cpu2 = cpu1
# 输出 两个变量的内存地址，可以发现，是一致的
print('cpu1的id：', id(cpu1))
print('cpu2的id：', id(cpu2))

print('-------------(2)类的浅拷贝-------------')
# 创建一个硬盘类的对象
disk = Disk
# 创建一个计算机类的对象
computer = Computer(cpu1, disk)

print('-------------浅拷贝-------------')
# 浅拷贝，只拷贝一个对象，对象中的子对象不拷贝
# import copy （ps：在最上方导入一个模块，并且引入参数
# 使用一个 import 会导入一个包 叫 copy
computer2 = copy.copy(computer)
print(computer, computer.cpu, computer.disk)
print(computer2, computer2.cpu, computer2.disk)


print('-------------深拷贝-------------')
# 深拷贝则，对象中的子对象也一起拷贝
# 使用 copy.deepcopy 进行深拷贝
computer3 = copy.deepcopy(computer)
print(computer, computer.cpu, computer.disk)
print(computer3, computer3.cpu, computer3.disk)
